using System.Collections.Generic;

using MethodChaining.MFComputer.Builders;



namespace MethodChaining.MFComputer.Model
{
	public class Computer
	{
		private readonly Processor _processor;
		private readonly List<Disk> _disks;
		private readonly int _numberOfCores;





		internal Computer( Processor processor, int numberOfCores, IEnumerable<Disk> disks )
		{
			_processor = processor;
			_numberOfCores = numberOfCores;
			_disks = ( disks == null ) ? null : new List<Disk>( disks );
		}





		public static ComputerBuilder New
		{
			get { return new ComputerBuilder(); }
		}



		public Processor Processor
		{
			get { return _processor; }
		}



		public List<Disk> Disks
		{
			get { return _disks; }
		}



		public int NumberOfCores
		{
			get { return _numberOfCores; }
		}
	}
}